package com.ruoyi.business.service;

import java.util.List;
import com.ruoyi.business.domain.TestSession;
import com.ruoyi.common.core.domain.R;

/**
 * 测试场次Service接口
 * 
 * @author lcz
 * @date 2025-02-20
 */
public interface ITestSessionService 
{
    /**
     * 查询测试场次
     * 
     * @param id 测试场次主键
     * @return 测试场次
     */
    public TestSession selectTestSessionById(Long id);

    /**
     * 查询测试场次列表
     * 
     * @param testSession 测试场次
     * @return 测试场次集合
     */
    public List<TestSession> selectTestSessionList(TestSession testSession);

    public List<TestSession> selectTestSessionListByName(TestSession testSession);

    /**
     * 新增测试场次
     * 
     * @param testSession 测试场次
     * @return 结果
     */
    public int insertTestSession(TestSession testSession);

    /**
     * 修改测试场次
     * 
     * @param testSession 测试场次
     * @return 结果
     */
    public int updateTestSession(TestSession testSession);

    /**
     * 批量删除测试场次
     * 
     * @param ids 需要删除的测试场次主键集合
     * @return 结果
     */
    public int deleteTestSessionByIds(Long[] ids);

    /**
     * 删除测试场次信息
     * 
     * @param id 测试场次主键
     * @return 结果
     */
    public int deleteTestSessionById(Long id);

    R<List<TestSession>> frontEndList();

    R<List<TestSession>> frontStartList();

    /**
     * 构建单次测试所有学生成绩明细导出数据
     * @param testSessionId 测试场次ID
     * @return 导出VO列表
     */
    List<com.ruoyi.business.domain.vo.TestSessionStudentScoreExportVO> buildExportStudentScores(Long testSessionId);

    /**
     * 构建BMI班级统计导出数据
     * @param testSessionId 测试场次ID
     * @return 导出VO列表
     */
    List<com.ruoyi.business.domain.vo.BmiClassStatExportVO> buildBmiClassStatExport(Long testSessionId);

    /**
     * 构建班级各科成绩统计导出数据
     * @param testSessionId 测试场次ID
     * @return 导出VO列表
     */
    List<com.ruoyi.business.domain.vo.ClassProjectStatExportVO> buildClassProjectStatExport(Long testSessionId);

    /**
     * 构建班级总成绩统计导出数据
     * @param testSessionId 测试场次ID
     * @return 导出VO列表
     */
    List<com.ruoyi.business.domain.vo.ClassTotalScoreStatExportVO> buildClassTotalScoreStatExport(Long testSessionId);

    /**
     * 构建学校总体体测报告数据
     * @param testSessionId 测试场次ID
     * @return 统计VO
     */
    com.ruoyi.business.domain.vo.SchoolTestReportVO buildSchoolTestReport(Long testSessionId);
}
